package com.tungkong.encode;

/**
 * 创建日期：2022/6/6 4:37 下午
 * 创建者：吴开杰
 * 修改日期：2022/6/6 4:37 下午
 * 修改者：吴开杰
 * 版本：v.1.0
 * 描述：YUV数据，合成H264编码的mp4文件
 * 1.YUV数据来自uvccamera读取的usb摄像头数据，传递到Java层
 * 2.将图像数据传递到native，然后通过ffmpeg编码器合成mp4文件（使用ffmpeg的原因是安卓11原生的MediaCodec在stop的时候出现异常）
 * 3.
 */
public class VideoRecorder {

    /**
     * 启动录像
     * @param recorderType
     * @param outUrl
     * @param frameWidth
     * @param frameHeight
     * @param videoBitRate
     * @param fps
     * @return
     */
    public native int native_StartRecord(int recorderType, String outUrl, int frameWidth, int frameHeight, long videoBitRate, int fps);

    /**
     * 停止录像
     * @return
     */
    public native int native_StopRecord();

    /**
     * 传递数据到native
     * @param format
     * @param data
     * @param width
     * @param height
     */
    public native void native_OnPreviewFrame(int format, byte[] data, int width, int height);



    private static boolean isLoaded;
    static {
        if (!isLoaded) {
            System.loadLibrary("avcodec");
            System.loadLibrary("avfilter");
            System.loadLibrary("avformat");
            System.loadLibrary("avutil");
            System.loadLibrary("fdk-aac");
            System.loadLibrary("swresample");
            System.loadLibrary("swscale");
            System.loadLibrary("x264");
            System.loadLibrary("ffmpeg");
            isLoaded = true;
        }
    }

}
